<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 群组: 在匹配的过程,先匹配整个正则表达式,放到数组中,然后再将() 中的子表达式 依次匹配也放到数组中

    // var str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    // var reg = /a(.{2,5}?)a/;  // 至少一个
    // console.log(reg.exec(str));


    // ?:  指定匹配模式后面的字符必须被匹配，但又不返回这些字符
    // (?:pattern) 会作为匹配检验，并出现在匹配字符结果里面，但是跟()的区别是，它不作为子匹配返回；

    var url = "https://www.a.mp3.baidu.com/";
    var reg = /^(http|https):\/\/(?:www\.)?((?:\w+\.){0,2}\w+)(?:\.com|\.cn|\.net|\.com\.cn)(\/)?$/; 
    console.log(reg.exec(url));

    // 群组的取值方式
    // (1) 先获取数组 对应数组下标取值
    // var arr = reg.exec(url);
    // console.log(arr[0],arr[1],arr[2],arr[3]);

    // (2) 借助构造函数RegExp.$1 RegExp.$2 .... RegExp.$9  
    // 每次正则表达式匹配完毕 会将匹配的群组 放到构造函数相应的位置
    // console.dir(RegExp);
    // console.log(RegExp.$_,RegExp.$1,RegExp.$2,RegExp.$3);



    var email = "a1272071495@163.com";

    // var reg = /^[a-zA-Z][0-9a-zA-Z_]{5,17}@(qq|163|126|gmail|\w{2,})\.(com|email|club)$/;
    var reg = /^(\w+)@(\w+)\.(com|cn|email)$/;
    console.log(reg.exec(email));
    console.log(RegExp.$_,RegExp.$1,RegExp.$2,RegExp.$3);

</script>
</html>